package cn.edu.nuc.bre.service.interfaces;

import java.io.InputStream;
import java.util.zip.ZipInputStream;

import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;

import cn.edu.nuc.bre.util.PageInfo;

/**
 * 工作流部署定义业务逻辑规范
 * @author 王凯
 *
 */
public interface WorkFlowDefinationService {
	
	/**
	 * 部署新的流程定义
	 * @param inputStream zip输入流，对应流程定义bpmn和图片
	 * @param deployName 文件名就是部署流程的名称
	 * @throws Exception 部署过程中发生的异常
	 */
	public void deployNewProcess(ZipInputStream inputStream, String deployName) 
			throws Exception;
	
	/**
	 * 按部署id删除流程定义
	 * @param deploymentId 部署id
	 */
	public void deleteProcessDefinitionByDeploymentId(String deploymentId);
	
	/**
	 * 分页查询部署信息
	 * @param targetPage 目标页，即当前页
	 * @param pageSize 页面大小
	 * @param deployName 部署名称
	 * @return 查询结果
	 */
	public PageInfo<Deployment> findDeploymentByPage(
			Integer targetPage, Integer pageSize, String deployName);
	
	/**
	 * 分页查询流程定义
	 * @param targetPage 目标页，即当前页
	 * @param pageSize 页面大小
	 * @param procName 流程定义名称
	 * @return 查询结果
	 */
	public PageInfo<ProcessDefinition> findPorcessDefinationByPage(
			Integer targetPage, Integer pageSize, String procName);
	
	/**
	 * 使用部署对象ID和资源图片名称，获取图片的输入流
	 * @param deploymentId 流程部署Id
	 * @param imageName 图片名称
	 * @return 图片的输入流
	 */
	public InputStream findImageInputStream(String deploymentId, String imageName);
}
